<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  <meta http-equiv="expires" content="Fri, 26 Dec 2003 19:13:00 +0100" />
  <meta name="language" content="en" />
  <meta name="robots" content="index,follow" />
  <meta name="revisit-after" content="7 days" />
  <meta name="author" content="Dominique Stender, Paul Sullivan" />
  <meta name="date" content="2003-11-26T18:13:00+01:00?" />
  <meta name="description" content="Documentation for the CPAINT AJAX toolkit" />
  <meta name="keywords" content="AJAX, CPAINT, Asynchronous JavaScript and XML, XML, JavaScript, PHP, ASP, .NET, Perl" />
  <title>CPAINT documentation :: changelog</title>
  <link rel="stylesheet" href="cpaint.css" media="screen" />
  <link rel="stylesheet" href="cpaint.print.css" media="print" />
  <script type="text/javascript" src="js/menu.js"></script>
  <style type="text/css">
<!--
.menu1 {font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	text-decoration: none;
	font-weight:  bold;
}
-->
  </style>
</head>
<body>
  <p align="right">
    <br />
    <a href="http://sf.net/projects/cpaint/">
      <img src="gfx/css_logo.gif" alt="" border="0" height="51" width="182" alt=""  />
    </a>
  </p>
  <h1>CPAINT :: Cross-Platform Asynchronous INterface Toolkit</h1>
<div id="menu">
    <h2>Contents</h2>
    <p>
      <script type="text/javascript">
      <!--
        generate_menu();
      //-->
      </script>
    </p>
    <br /><br /><br />
  <p>
    <img src="gfx/xhtml10.gif" alt="" border="0" height="15" width="80" /><br />
    <img src="gfx/css.gif" alt="" border="0" height="15" width="80" /><br />
    <a href="http://www.monorom.to/" target="_blank"><img src="gfx/monorom.gif" alt="monorom" border="0" height="15" width="80" /></a><br />
  <a rel="license" href="http://creativecommons.org/licenses/by/1.0/" target="_blank"><img src="gfx/cc.gif" alt="Creative Commons License" border="0" height="15" width="80" /></a></p>
  <p><br />
    <a href="http://creativecommons.org/licenses/by/1.0/" target="_blank" class="menu" rel="license">Project Services By <br />
    </a><a href="http://sourceforge.net/" target="_blank" class="menu1"><img src="http://sourceforge.net/sflogo.php?group_id=141041&amp;type=2" width="125" height="37" border="0" alt="SourceForge.net Logo"/></a></p>
</div>
  
  <div id="content">
    <h2>Changelog</h2>
    <h3> v2.0.3 (Released Feburary 8, 2006)</h3>
    <p>
       &raquo; PHP: nixed potential security hole with invalid response types 
(Thanks to James Bercegay)</p>
    <h3>v2.0.2 (Released January 20, 2006)</h3>
    <p>
        &raquo; JS: check HTTP response code and throw an error if request was 
        &nbsp;not accepted by server. (thanks gloomyandy)<br />
        &raquo; JS: allowing the underscore in node names.<br />
&raquo; JS: added support for the passing of arrays and objects to the backend.<br />
&raquo; JS: node names, attribute names and -values from backend are now&nbsp;expected to be valid ISO-8859-1<br />
&raquo; JS: fixed wrong initialization of the data property to int zero in&nbsp;class cpaint_result_object.<br />
&raquo; JS: removed unneccessary setter() methods from internal classes&nbsp;to reduce size.<br />
&raquo; JS: added debugging level <a href="frontend.class.cpaint.set_debug.html" class="code">cp.set_debug(-1)</a> to suppress errors.<br />
&raquo; JS: fixed type conversion issue where non-empty, pure whitespace&nbsp;strings where interpreted as numbers.<br />
&raquo; JS: fixed problem with callback being called twice. (thanks to Lance Rushing)<br />
&raquo; JS: fixed problem with URLs with existing GET parameters.
          (thanks to Nelson Antunes)<br />
&raquo; JS / PHP: added support for JSON as response type.<br />
&raquo; JS / PHP: added support for E4X as response type.<br />
&raquo; PHP: added cpaint::unregister()<br />
&raquo; PHP: added cpaint::get_response_type();<br />
&raquo; PHP: removed a bug in JSON library that prevented the generation of valid JSON<br />
&nbsp;&nbsp;&nbsp;when including a leading zero character.<br />
&raquo; PHP: renamed the proxyscript from cpaint2_proxy.php to cpaint2.proxy.php.<br />
&raquo; PHP: Removed unneccessary unescaping of parameters in proxy script.<br />
&raquo; PHP: added support for array and object parameters from JavaScript.<br />
&raquo; PHP: removed encoding of node names, attribute names and attribute <br />
&nbsp;&nbsp;&nbsp;values to UTF-8 if possible. those values must now be valid <br />
&nbsp;&nbsp;&nbsp;ISO-8859-1.<br />
&raquo; PHP: removed output buffer to make it possible to include backend <br />
&nbsp;&nbsp;&nbsp;and frontend in the same file<br />
&raquo; PHP: fixed error output (a function was called...) when no <br />
&nbsp;&nbsp;&nbsp;parameters where sent to CPAINT indicating a function call, thus<br />
&nbsp;&nbsp;&nbsp;making it possible to include backend and frontend in the same file<br />
&nbsp;&nbsp;&nbsp;(thanks S. Alexandre M. Lemaire)<br />
&raquo; PHP: added backend debugger code to main source tree &amp; documentation.<br />
&raquo; PHP: secured proxy utility (see documentation).<br />
&raquo; PHP: added backend configuration file (for proxy security and future use)<br />
&raquo; ASP: removed from distribution to focus on PHP and other ports.<br />
    </p>
    <h3>v2.0.1 (Released September 5, 2005)</h3>
      <p>
        &raquo; JS: added the returning of plain-text response when using XML|OBJECT
          response type<br />
          &nbsp;&nbsp;&nbsp;as second parameter to user-defined callback function
          (thanks Gunther)<br />
        &raquo; JS: added cpaint.capable property to determine AJAX-compatible 
          browsers<br />
        &raquo; JS: cleaned up CPAINT parameters when not using CPAINT API w/ proxy<br />
        &raquo; PHP: fixed callability of object methods (thanks Markus Wolf)<br />
        &raquo; PHP: fixed HTTP authentication in proxy file<br />
        &raquo; ASP: improved security regarding incoming function arguments<br />
      </p>
    
    <h3>v2.0 (Released August 19, 2005) </h3>
      <p>
        &raquo; completely rewrote the JavaScript frontend.<br />
        &nbsp;&nbsp;&raquo; 100% OOP approach.<br />
        &nbsp;&nbsp;&raquo; completely configurable through setter methods.<br />
        &nbsp;&nbsp;&raquo; support for syncronized calls (SJAX?) ;-).<br />
        &nbsp;&nbsp;&raquo; automatic XML parsing into JavaScript document structure if <a href="frontend.class.cpaint.set_response_type.html" class="code">response_type='object'</a>.<br />
        &nbsp;&nbsp;&raquo; support for arbitrary character sets, including non-printable characters.<br />
        &nbsp;&nbsp;&raquo; automatic detection and conversion of numeric data into integers / floats.<br />
        &nbsp;&nbsp;&raquo; unified use of <a href="frontend.class.cpaint.call.html" class="code">call()</a> for local and remote targets.<br />
        &nbsp;&nbsp;&raquo; can now use frontend to retrieve static files or backend functions not implemented with CPAINT <br />
        &nbsp;&nbsp;&raquo; use of a single (persistent) connection for multiple calls.<br />
        &nbsp;&nbsp;&raquo; XML to JavaScript parser is able to parse any XML structure now.<br />
        &nbsp;&nbsp;&raquo; support for XML attributes.<br />
        &nbsp;&nbsp;&raquo; added <a href="frontend.class.cpaint_result_object.find_item_by_type.html" class="code">find_item_by_type()</a> to <a href="frontend.class.cpaint_result_object.html" class="code">cpaint_result_object</a>.<br />
        &nbsp;&nbsp;&raquo; added <a href="frontend.class.cpaint_result_object.get_attribute.html" class="code">get_attribute()</a>, <a href="frontend.class.cpaint_result_object.set_attribute.html" class="code">set_attribute()</a> to <a href="frontend.class.cpaint_result_object.html" class="code">cpaint_result_object</a>.<br />
        &nbsp;&nbsp;&raquo; improved debugging, added debuglevels 1, 2. see <a href="frontend.class.cpaint.set_debug.html" class="code">set_debug()</a><br />
        <br />
        &raquo; completely rewrote the PHP and ASP backends.<br />
        &nbsp;&nbsp;&raquo; 100% OOP approach.<br />
        &nbsp;&nbsp;&raquo; protection against remote code-execution.<br />
        &nbsp;&nbsp;&raquo; support for object methods as callable functions.<br />
        &nbsp;&nbsp;&raquo; nested XML support through composite pattern.<br />
        &nbsp;&nbsp;&raquo; arbitrary XML structure creation support.<br />
        &nbsp;&nbsp;&raquo; support for arbitrary character sets.<br />
        &nbsp;&nbsp;&raquo; replaced remote code-execution blacklisting approach of v1.3-SP with whitelisting through <a href="backend.class.cpaint.register.html" class="code">cpaint.register()</a>.<br />
        &nbsp;&nbsp;&raquo; changed XML name convention. Attributes and tagnames are send as-is, not in uppercase.<br />
        <br />
        &raquo; improved readability of the ASP and PHP proxy utilities.<br />
        &nbsp;&nbsp;&raquo; fixed GET requests.<br />
        &nbsp;&nbsp;&raquo; proxy now uses attributenames identical to the CPAINT backend itself whenever possible.<br />
        &nbsp;&nbsp;&raquo; added support for target ports other than 80.<br />
        &nbsp;&nbsp;&raquo; added support for Basic Authentication.<br />
        &nbsp;&nbsp;&raquo; completely redesigned and rewritten documentation! <br />
    </p>

    <h3>v1.3-SP2 (Released August 16, 2005) </h3>
    <p>
      &raquo; improved the remote-code execution fix.<br />
    </p>
    
    <h3>v1.3-SP (Released August 15, 2005) </h3>
    <p>
      &raquo; fixed a remote code-execution vulnerability on the backend by adding a blacklist test on the function name passed by the frontend.<br />
    </p>
    
    <h3>v1.3 (Released July 10, 2005) </h3>
    <p>
      &raquo; rewrote <span class="code">cpaint_parse_ajax_xml()</span> to be able to parse arbitrary XML.<br />
      &raquo; added bugfix from v1.01 to <span class="code">cpaint_get_remote_file()</span> as well.<br />
    </p>
    
    <h3>v1.2 (Released June 20, 2005) </h3>
    <p>
      &raquo; added method <span class="code">cpaint_parse_ajax_xml()</span> to the JavaScript frontend for primitive XML to JavaScript transformation of response data.<br />
    </p>
    
    <h3>v1.01 (Released June 16, 2005) </h3>
    <p>
      &raquo; bugfix regarding Unicode character encoding in <span class="code">cpaint_call()</span>.<br />
    </p>
    
    <h3>v1.0 (Released June 13, 2005) </h3>
    <p>
      &raquo; added support for XML/DOM document object returns.<br />
      &raquo; added support for XML on the backend.<br />
      &raquo; added proxy files for accessing remote functions &amp; data.<br />
    &raquo; greatly improved documentation &amp; examples.<br />
&raquo; code stablized<br />
&raquo; development effort moved to SourceForge.Net<br />
    </p>
    <h3>Pre-1.0 Releases and Dates</h3>
    <p>&raquo; v0.7 - released June 8, 2005<br />
&raquo; v0.5 &amp; 0.6 - released June 6, 2005 <br />
&raquo; v0.4 - released June 3, 2005<br />
&raquo; v0.2 &amp; 0.3 - released June 2, 2005<br />
&raquo; v0.1 - released May 31, 2005 (first release)</p>
</div>
</body>
</html>
